ViewPager+TabLayout | 您所在的位置:网站首页 › tablayout viewpage 使用示例 › ViewPager+TabLayout |
ViewPager+TabLayout 1.View Pa ger 结合View 实现导航 ①创建布局并找控件 ②获取数据集合 ③创建适配器:destroyItem⽅法⾥删除 super.destroyItem(container,position,object); ,否则报错 ④设置适配器 getCount() // 当前有效视图的个数 instantiateItem // 创建指定位置的页⾯视图 destroyItem // 移除⼀个给定位置的页⾯ isViewFromObject // ⽤来判断 instantiateItem 数所返回来的 Key 与⼀个页⾯视图是否是代表的同⼀个视图 gment实现导航 2.View Pa ger 结合Fr a gm ent实现导航 ①创建布局并找控件 ②获取数据集合:获取fragment的集合fragments ③创建适配器:FragmentPagerAdapter和 FragmentStatePagerAdapter的对⽐以及内部⽅法 ④设置适配器 ⑴F r ag m e ntPag e r A d ap te r 和 F r ag m e ntState Pag e r A d ap te r 的对⽐ ①相同点: FragmentPagerAdapter和FragmentStatePagerAdapter都继承⾃PagerAdapter ②不同点: 卸载不再需fragment时,各⾃采⽤的处理⽅法不同 ①FragmentPagerAdapter(detach) 对于不再需要的fragment, FragmentPagerAdapter会选择调⽤事务的detach(Fragment)⽅法来处理它,⽽⾮ remove(Fragment)⽅法。也就是说, FragmentPagerAdapter只是销毁了fragment的视图, fragment实例还保留 在FragmentManager中。因此,FragmentPagerAdapter创建的fragment永远不会被销毁 ②FragmentStatePagerAdapter(remove) 会销毁不需要的fragment。事务提交后, activity的FragmentManager中的fragment会被彻底移除。 FragmentStatePagerAdapter类名中的“state”表明:在销毁fragment时,可在onSaveInstanceState(Bundle)⽅ 法中保存fragment的Bundle信息。⽤户切换回来时,保存的实例状态可⽤来恢复⽣成新的fragment 总结:在destroyItem()⽅法中,FragmentStatePagerAdapter调⽤的是remove()⽅法,适⽤于页⾯较多的情况;FragmentPagerAdapter 调⽤的是detach()⽅法,适⽤于页⾯较少的情况。但是有页⾯数据需要刷新的情况,不管是页⾯少还是多,还是要⽤ FragmentStatePagerAdapter,否则页⾯会因为没有重建得不到刷新 ⑵F r ag m e ntPag e r A d ap te r 和 F r ag m e ntState Pag e r A d ap te r 的内部⽅法 ①FragmentPagerAdapter |
CopyRight 2018-2019 实验室设备网 版权所有 |